package com.qualiti.javaweb.modelo;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Random;

import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;

public class Livro implements Serializable {

	private Long codigo;
	private String nome;
	private BigDecimal preco;
	private Categoria categoria;
	private int estoque;
	private Autor autor;
	
	public Livro() {
	}

	public Livro(String nome, BigDecimal preco, int estoque) {
		this.codigo = new Random().nextLong();
		this.nome = nome;
		this.preco = preco;
		this.estoque = estoque;
	}
	
	public Long getCodigo() {
		return codigo;
	}

	public void setCodigo(Long codigo) {
		this.codigo = codigo;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public BigDecimal getPreco() {
		return preco;
	}

	public void setPreco(BigDecimal preco) {
		this.preco = preco;
	}

	public Categoria getCategoria() {
		return categoria;
	}

	public void setCategoria(Categoria categoria) {
		this.categoria = categoria;
	}

	public int getEstoque() {
		return estoque;
	}

	public void setEstoque(int estoque) {
		this.estoque = estoque;
	}

	public Autor getAutor() {
		return autor;
	}

	public void setAutor(Autor autor) {
		this.autor = autor;
	}
	
	@Override
	public int hashCode() {
		return new HashCodeBuilder().append(codigo).toHashCode();
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		return new EqualsBuilder().append(codigo, ((Livro) obj).getCodigo()).isEquals();
	}

	@Override
	public String toString() {
		return new ToStringBuilder(this).append("codigo", codigo).append("nome", nome).append("autor", autor).append("preco", preco).append("categoria", categoria).toString();
	}
}
